package com.contain2.linkedhashmap;

import java.util.LinkedHashMap;
import java.util.Map;

public class Demo {

	public static void main(String[] args) {
		Map<Integer, String> map = new LinkedHashMap<Integer, String>();
		map.put(1, "paire");
		map.put(2, "orange");
		map.put(3, "banana");
		map.put(4, "apple");
		map.put(5, "beijing");
		map.put(6, "tomato");
		map.put(7, "foot");
		map.put(8, "milk");
		System.out.println(map);

		// 最近最少使用
		// 可以通过构造函数来构造一个迭代顺序为访问顺序（accessOrder设为true）的LinkedHashMap，
		// 这个访问顺序指的是按照最近被访问的Entry的顺序进行排序（从最近最少访问到最近最多访问）。
		// 遍历LinkedHashMap所需要的时间与Entry数量成正比，这是因为迭代器直接对双向链表进行迭代，而链表中只会含有Entry节点。
		// 迭代的顺序是从头节点开始一直到尾节点，插入操作会将新节点链接到尾部，所以保证了插入顺序，而访问顺序会通过afterNodeAccess()来保证，访问次数越多的节点越接近尾部。
		Map<Integer, String> map2 = new LinkedHashMap<Integer, String>(8, 0.75f, true);
		map2.put(1, "paire");
		map2.put(2, "orange");
		map2.put(3, "banana");
		map2.put(4, "apple");
		map2.put(5, "beijing");
		map2.put(6, "tomato");
		map2.put(7, "foot");
		map2.put(8, "milk");
		System.out.println(map2);
		for (int i = 0; i < 3; i++) {
			System.out.print(map2.get(i));
		}
		System.out.println(map2);
		map2.get(4);
		map2.get(1);
		System.out.println(map2);
	}

}
